package com.tom.architect.day01.simple5;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;

import java.util.HashMap;
import java.util.Map;

import com.tom.architect.R;
import com.tom.architect.day01.simple5.framework.HttpCallBack;

/**
 * 封装OkHttp，便于灵活替换网络框架。网络引擎切换。xUtils，okHttp，Retrofit，
 * 要求具备扩展性，网络不堆叠在一起；
 * 多级缓存之前访问的数据，提高效率。(内存中，数据库，文件中)
 * 单一职责：一个类，应该是一组相关性很高的函数、数据的封装。
 * 分离请求、数据缓存。
 */
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        doHttpAction();
    }

    // 执行网络请求操作。
    private void doHttpAction() {
        /********************访问网络开始*******************/
        Map<String, Object> params = new HashMap<>();
        // 特定参数
        params.put("iid", 6152551759L);
        params.put("aid", 7);

        /*HttpUtils httpUtils = new HttpUtils();
        httpUtils.get(this, ConstantValue.UrlConstant.HOME_DISCOVERY_URL,
                params,new HttpCallBack<DiscoverListResult>() {
                    @Override
                    public void onSuccess(DiscoverListResult result) {
                        if (result.isOK()) {
                            // 没有列表数据的情况, 打印 Toast 或者做一些其他处理
                        } else {
                            // 有数据列表的情况，显示列表
                            showListData(result);
                        }
                    }
                    @Override
                    public void onFailure(Exception e) {
                    }
                },true);*/
        // 建议将url放到 jni 中。防止反编译。图片压缩建议使用jni。
        HttpUtils.with(this).cache(true)
                .url("http://is.snsdk.com/v2/essay/discover/")
                .httpRequest(new XUtilsRequest())
                .param("iid", 6152551759L)
                .param("aid", 7)
                .request(
                        new HttpCallBack<DiscoverListResult>() {
                            @Override
                            public void onSuccess(DiscoverListResult result) {
                                if (result.isOK()) {
                                    // 没有列表数据的情况, 打印 Toast 或者做一些其他处理
                                } else {
                                    // 有数据列表的情况，显示列表
                                    showListData(result);
                                }
                                // 取消进度条
                            }

                            @Override
                            public void onFailure(Exception e) {
                                // 取消进度条
                            }

                            @Override
                            public void onPreExecute() {
                                // 加载进度条，可选择覆盖。
                            }
                        });
        /********************访问网络结束*******************/


        /********************访问网络开始*******************/
        /*Map<String, Object> params = new HashMap<>();
        // 特定参数
        params.put("iid", 6152551759L);
        params.put("aid", 7);
        HttpUtils.with(this).cache(true).get()
                .url("sort")
                .param("iid", 6152551759L).param("aid", 7).request(
                new HttpCallBack<DiscoverListResult>() {
                    @Override
                    public void onSuccess(DiscoverListResult result) {
                        showListData(result);
                    }

                    @Override
                    public void onFailure(Exception e) {
                        e.printStackTrace();
                    }
                });*/
        /********************访问网络结束*******************/



    }

    private void showListData(DiscoverListResult discoverListResult) {
        // TODO,
    }

}